package demo04;

/*
方法重载的说明
对于功能类似的方法来说，因为参数列表不一样，却需要记住那么多不同的方法名称，太麻烦了
 方法的重载Overload：多个方法的【名称一样】，但是【参数列表不同】。
 好处：只需要记住唯一的一个方法名称，就可以实现类似的多个功能。

 方法重载与下列因素相关：
 1.参数个数不同
 2.参数类型不同
 3.参数的多类型顺序不同

 方法重载与下列因素无关：
 1.与参数的名称无关
 2.与方法的返回值类型无关
 */
public class Demo01MethedOverload {
    public static void main(String[] args) {
//        System.out.println(sumTwo(1,4));//5
//        System.out.println(sumThree(1,4,6));//11
//        System.out.println(sumThree(1,2,3,4));//10
        System.out.println(sum(10, 20));//两个参数的方法运行
        //System.out.println(sum(1,2,3,4,5));//找不到任何相匹配的方法，所以失败
    }

    public static int sum(int a, int b) {
        System.out.println("有两个参数的方法执行");
        return a + b;
    }

    public static double sum(double a, double b) {
        System.out.println("有两个参数的方法执行");
        return (int) (a + b);
    }

    //写法错误！与返回值类型无关
//    public static int sum(double a, double b) {
//        System.out.println("有两个参数的方法执行");
//        return (int)(a + b);
//    }

    //写法错误！方法的重载方法的参数名称无关。
//    public static double sum(double x,double  y) {
//       System.out.println("有两个参数的方法执行");
//       return (int) (x+y);
//   }
    public static int sum(int a, int b, int c) {
        System.out.println("有三个参数的方法运行");
        return a + b + c;
    }

    public static int sum(int a, int b, int c, int d) {
        System.out.println("有四个参数的方法运行");
        return a + b + c + d;
    }
}
